home *** CD-ROM | disk | FTP | other *** search
- Program DateChange;
-
- {$R-}
- {$U-}
- {$D 4DEX}
-
- USES Memtypes, Quickdraw, OSIntf, Toolintf, PackIntf;
-
-
- Procedure my4DEX(var Datein:str255; var Numin:Longint);
-
- var
- Year1, Year2, Year3, Leap, Month, Days, Final, Count, Years, Worknum: Longint;
- Sdays, Smonth, Syears: str255;
- Months: Array[1..12] of Longint;
-
- Begin
- Months[1]:=31;
- Months[2]:=28;
- Months[3]:=31;
- Months[4]:=30;
- Months[5]:=31;
- Months[6]:=30;
- Months[7]:=31;
- Months[8]:=31;
- Months[9]:=30;
- Months[10]:=31;
- Months[11]:=30;
- Months[12]:=31;
-
-
- If (Numin=0) then
-
- {here we convert string to number and pass back in Datein}
-
- begin
- StringToNum(Copy(Datein, 4, 2), Days);
- StringToNum(Copy(Datein, 1, 2), Month);
- StringToNum(Copy(Datein, 7, 1), Year1);
- StringToNum(Copy(Datein, 8, 1), Year2);
- StringToNum(Copy(Datein, 9, 2), Year3);
-
- Leap:=Trunc(Year3/4);
- Final:=(Year1*365000)+(Year1*250)+(Year2*36500)+(Year2*25)+(Year3*365)+Leap+Days;
-
-
- If(((Leap*4)=Year3) And (Month<3)) then
- Final:=Final-1;
-
- Count:=1;
- While(Count<Month) do
- begin
- Final:=Final+Months[Count];
- Count:=Count+1;
- end;
- Numin:=Final;
- end
-
- else
-
- {Now we convert Numin to Datein}
-
- begin
- Worknum:=Numin-1;
- Year1:=Trunc(Worknum/365000);
- Worknum:=Worknum-(Year1*365000)-(Year1*250);
- Year2:=Trunc(Worknum/36500);
- Worknum:=Worknum-(Year2*36500)-(Year2*25);
- Year3:=Trunc(Worknum/365);
- Worknum:=Worknum-(Year3*365);
- Leap:=Trunc(Year3/4);
- Worknum:=Worknum-Leap+1;
- Month:=1;
- While(Months[Month]<Worknum) do
- begin
- Worknum:=Worknum-Months[Month];
- Month:=Month+1;
- end;
- Days:=Worknum;
- Years:=Year3+(Year2*100)+(Year1*1000);
-
-
- If (((Year3/4)=Trunc(Year3/4)) and (Month<3)) then
- Days:=Days+1;
-
- If ((Month=1) and (Days=0)) then
- begin
- Days:=31;
- Month:=12;
- Years:=Years-1;
- end;
-
- NumToString(Days, Sdays);
- NumToString(Month, Smonth);
- NumToString(Years, Syears);
- If(Length(Sdays)<2) then
- Sdays:=Concat('0', Sdays);
- If(Length(Smonth)<2) then
- Smonth:=Concat('0', Smonth);
- While(Length(Syears)<4) do
- Syears:=Concat('0', Syears);
- Datein:=Concat(Smonth, '/', Sdays, '/', Syears);
- End
- End;
-
- Begin
- End.